<html>

<head>
    <title>类是什么？</title>
</head>

<body>
    <table width=100%>
        <tr>
            <td align=left>
                <a href="messages.html"><img src=../../images/PreviousArrow.gif width=26 height=26 align=bottom border=0
                        alt="Previous | "></a><a href="inheritance.html"><img src=../../images/NextArrow.gif width=26
                        height=26 align=bottom border=0 alt="Next | "></a><a href="../../index.html"><img
                        src=../../images/WayUpArrow.gif width=26 height=26 align=bottom border=0
                        alt="Trail Map | "></a><a href="../index.html"><img src=../../images/javaHeader.gif width=26
                        height=26 align=bottom border=0 alt="Writing Java Programs | "></a>
            <td>
            <td align=right>
                <a href="index.html"><strong><em>面向对象编程概念：入门</em></strong></a>
            </td>
        </tr>
    </table>
    <p>
        <hr size=4>

    <h2>
        类是什么？
    </h2>
    <p>
    <blockquote>
        在现实世界中，你经常有很多相同类型的东西。例如，你的自行车实际上只是世界上众多自行车中的一种。使用面向对象的术语，我们说您的自行车是自行车类对象的<em>实例</em>。所有自行车都有一些共同的状态（当前档位、当前脚踏板转速、具有两个轮子等）和行为（换挡、刹车等）。
        <p>
            在制造自行车时，制造商利用自行车具有相同的特点，他们从同一个蓝图中制造许多自行车——为他们制造的每一辆自行车制定一个新的蓝图是非常低效的。
        <p>
            在面向对象的软件中，也可以有许多相同类型的对象共享特征：矩形、员工记录、视频剪辑等等。 与自行车制造商一样，您可以利用相同种类的物体具有某些特征的事实，并可以为这些物体创建蓝图。对象的软件蓝图称为<em>类</em>。
            <hr>
            <strong>定义：</strong>类是一个模板或原型，用于定义特定类型的所有对象所共有的变量和方法。
            <hr>
        <p>
            <center><img src="images/class.trans.gif" width=350 height=171></center>
        <p>
            例如，您可以创建自行车类，该类将声明几个变量以包含当前档位、当前脚踏板转速等。它还将声明并提供允许骑车人改变档位、刹车和改变脚踏板转速的方法的实现。
        <p>
            <center><img src="images/bikeclass.trans.gif" width=252 height=186></center>
        <p>
            变量的值由类的每个实例提供。因此，在创建了自行车类之后，必须<em>实例化</em>它（创建它的实例）才能使用它。从类创建实例时，该类声明的变量将分配到内存中。然后可以使用实例的方法为变量赋值。同一类的实例共享方法实现。 
        <h4>术语"对象"</h4>
        <blockquote>
            您可能注意到对象和类的图示看起来非常相似。事实上，类和对象之间的区别往往是一些混淆的根源。在现实世界中，很明显，类本身并不是它们所描述的对象——自行车的蓝图并不是自行车。然而，区分软件中的类和对象有点困难。这部分是因为软件对象最初只是真实世界对象或抽象概念的电子模型。但也因为许多人不一致地使用“对象”一词，并用它来指代类和实例。
            <p>
                在图中，类的方法和变量没有着色，因为它们还不存在。必须先从类中创建一个实例，然后才能调用方法，变量才能具有任何值。相比之下，对象的方法和变量用颜色填充，表示对象实际存在，您可以使用它。您可以向对象发送一条消息，它将通过执行该方法并修改变量的值进行响应。
        </blockquote>

        <h4>类的好处</h4>
        <blockquote>
            对象提供了模块化和信息隐藏的好处。类提供了可重用性的好处。自行车制造商一次又一次地重复使用相同的蓝图来制造大量自行车。软件程序员反复使用同一类来创建许多对象。
        </blockquote>

    </blockquote>
    <p>
        <hr size=4>
    <p>
    <table width=100%>
        <tr>
            <td align=left>
                <a href="messages.html"><img src=../../images/PreviousArrow.gif width=26 height=26 align=top border=0
                        alt="Previous | "></a><a href="inheritance.html"><img src=../../images/NextArrow.gif width=26
                        height=26 align=top border=0 alt="Next | "></a><a href="../../index.html"><img
                        src=../../images/WayUpArrow.gif width=26 height=26 align=top border=0 alt="Trail Map | "></a><a
                    href="../index.html"><img src=../../images/javaHeader.gif width=26 height=26 align=top border=0
                        alt="Writing Java Programs | "></a>
            <td>
            <td align=right>
                <a href="index.html"><strong><em>面向对象编程概念：入门</em></strong></a>
            </td>
        </tr>
    </table>
</body>

</html>